Object-oriented programming structures software as a collection of object instances or “components”, each patterned after a class that defines the methods and properties of the component. When referring to programming, “componentization” refers to the defining of the components such that they are made available to a program. Of course, components of a program are functionally interconnected in order to accomplish the larger purposes of the program. “Composition” refers to the defining of how objects in the program are related together.
Typically, the interrelation between objects is accomplished using code or declarations that define very specifically the relationship between components of a program. Great progress on the art of object-oriented programming has been made using such explicit composition of the interconnection between coded objects. In conventional explicit composition, for example, code that defines the composition of the program (i.e., the interrelation between components) is compiled after authoring the program using source code. The executable file thus from its birth represents the various components of the program and the various interrelations between the program components.